In any processor based system, a non-volatile program--the so-called "boot" program--is always present. The boot program may be used to load the main program or combined with the main program in the non-volatile program memory. In either case, the boot program enables the processor to start initial operations properly when power is first applied. In the absence of a boot program, the processor would begin operating in an unknown state and eventually become "lost". The boot program is designed to be placed on the processor board at the time of manufacture. In that way, it is always accessible to the processor at power up.
This approach, routinely used in the prior art, can be improved in a number of respects, not the least of which is the cost. First, there is a recurring cost for the manufacturing steps to copy the boot program onto a general (empty) non-volatile memory chip and then placing the chip on the printed circuit board. Following conventional technology, the non-volatile memory is a core type or UV type memory requiring special equipment and carefully designed process steps that protect the memory during the manufacturing steps. These memories have to be removable, calling for separate sockets and board area and increasing manufacturing cost. In most applications, these boot memories are segregated to protect them from corruption by the application programs, calling for more board space.
Prior approaches also involve several non-recurring expenses in the design of the hardware and manufacturing processes, but a significant cost is occasioned in the development of the boot program, a program that is unique for each processor and specially adapted to meet each application's specific initialization requirements. This indispensable customizing usually leads to a proliferation of boot programs for all systems, all different, all needing maintenance and program support, and that naturally adds to the cost.
With the development of the EEPROM and Flash memory technologies, it is possible to eliminate memory sockets and to manufacture hardware with blank board-mounted memories. These memory devices can be externally programmed. One programming technique uses card edge connectors to enter memory instructions. This is expensive. Since these types of memory devices can be repeatedly programmed, the capability does exist to load application programs (with the help of the boot program executed by the processor) from a location outside the box, so to speak, over a simple bus/receiver, such as RS-232 or RS-422 protocol buses. However, clearly, the boot program itself cannot be loaded in this manner on to bare board with blank memories, because of the lack of the boot program.
In many real time intensive applications, the capability to monitor and deposit parameters of interest while the application program is running can be important. Typically, this task is performed by the boot program or a subsequently loaded program, sometimes called the "Software Development Package" (SDP) program. However, the real-time penalties with SDP programs are unacceptable in many situations, meaning that monitoring and updating are usually performed as background tasks, naturally at much slower rates.